#!/usr/bin/env python
#  Copyright (c) 2010
#  The Regents of the University of Michigan
#  All Rights Reserved

#  Permission is granted to use, copy, create derivative works, and
#  redistribute this software and such derivative works for any purpose,
#  so long as the name of the University of Michigan is not used in
#  any advertising or publicity pertaining to the use or distribution
#  of this software without specific, written prior authorization. If
#  the above copyright notice or any other identification of the
#  University of Michigan is included in any copy of any portion of
#  this software, then the disclaimer below must also be included.

#  This software is provided as is, without representation or warranty
#  of any kind either express or implied, including without limitation
#  the implied warranties of merchantability, fitness for a particular
#  purpose, or noninfringement.  The Regents of the University of
#  Michigan shall not be liable for any damages, including special,
#  indirect, incidental, or consequential damages, with respect to any
#  claim arising out of or in connection with the use of the software,
#  even if it has been or is hereafter advised of the possibility of
#  such damages.

import hashlib
import sys


ENCODED_KEY_LENGTH = 44

KEYS = []

  
def main():
  for vanish_log in sys.argv[1:]:
    for line in open(vanish_log, 'r'):
      line = line.strip()
      idx = line.find('Key: ')
      if idx == -1:
        continue
      line = line[idx+len('Key: '):]
      encoded_key = ''.join(line[:ENCODED_KEY_LENGTH].split())
      line = line[ENCODED_KEY_LENGTH:]
      assert line.startswith(' Value: ')
      line = line[len(' Value: '):]
      encoded_value = ''.join(line.split())  # Collapse spaces.

      # Yes, this is really in the std lib. I love Python.
      key = encoded_key.decode('hex')
      value = encoded_value.decode('hex')

      hashed_key = hashlib.sha1(key).digest()
      assert len(hashed_key) == 20
      KEYS.append((hashed_key, value))

  print repr(KEYS)
  print >> sys.stderr, '%d fragments' % len(KEYS)
if __name__ == '__main__':
  main()
